package org.heart.utils;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;

@Component
public class CommonUtils {

    private static final Random random = new Random();

    /**
     * 校验手机验证码是否合法
     */
    public static boolean checkMobile(String mobile) {

        if(ObjectUtil.isNotNull(mobile) && ObjectUtil.isNotEmpty(mobile)){
            return Pattern.matches("^1[3-9]\\d{9}$", mobile);
        }

        return false;
    }

    /**
     * 生成一个指定位数的随机数字字符串
     *
     * @param length 随机数字字符串的长度
     * @return 随机数字字符串
     */
    public String randomNumbers(int length) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(random.nextInt(10)); // 生成0-9之间的随机数字
        }
        return sb.toString();
    }

    /**
     * 计算当前时间 距离Date 数据 天数
     * @param args
     */
    /**
     * 计算给定日期与当前时间的相差天数
     *
     * @param targetDate 目标日期（如果为 null，默认返回 0）
     * @return 相差天数（正数：目标日期在未来；负数：目标日期在过去）
     */
    public static Integer daysBetweenNow(Date targetDate) {

        if (targetDate == null) {
            return 0;
        }

        long days = DateUtil.betweenDay(targetDate,DateUtil.date(), true);

        // 安全转为 Integer（处理溢出）
        if (days > Integer.MAX_VALUE) {
            return Integer.MAX_VALUE;
        } else if (days < Integer.MIN_VALUE) {
            return Integer.MIN_VALUE;
        } else {
            return (int) days;
        }
    }



    public static void main(String[] args) {

        /**
         * 校验手机号是否合法
         */
        System.out.println(checkMobile("13854367893"));


//        System.out.println(daysBetweenNow());
    }


}
